package com.ppc.service;

import com.ppc.dto.EmployerTaskDTO;
import com.ppc.dto.EmployerTaskPageQueryDTO;
import com.ppc.result.PageResult;
import com.ppc.vo.EmployerWorkerTaskVO;
import com.ppc.vo.TaskDetail;

/**
 * 雇主订单Service
 *
 * @author LENOVO
 * @date 2023/12/20
 */
public interface EmployerTaskService {

  /**
   * 分页查询订单
   *
   * @param employerTaskPageQueryDTO
   * @return
   */
  PageResult taskPageQuery(EmployerTaskPageQueryDTO employerTaskPageQueryDTO);

  /**
   * 雇主查看订单详细信息
   *
   * @param taskId
   * @return
   */
  TaskDetail checkTaskDetail(Long taskId);

  /**
   * 雇主查看员工提交结果
   *
   * @param taskId
   * @return
   */
  EmployerWorkerTaskVO checkWorkerTask(Long taskId);

  /**
   * 雇主修改订单
   *
   * @param employerTaskDTO
   * @return
   */
  void updateTask(EmployerTaskDTO employerTaskDTO);

  /**
   * 雇主创建申诉
   *
   * @param taskId
   * @param claimType
   * @param claimReason
   */
  void createClaim(Long taskId, Integer claimType, String claimReason);

  /**
   * 雇主确认订单
   *
   * @param taskId
   * @return
   */
  void confirmTask(Long taskId);

  /**
   * 雇主更新钱包余额
   */
  void updateEmployerWallet(Long taskId);

  /**
   * 工人更新钱包余额
   *
   * @param taskId
   */
  void updateWorkerWallet(Long taskId);

  /**
   * 雇主确认订单后雇主钱包的变化记录
   *
   * @param taskId
   */
  void createEmployerMoneyRecording(Long taskId);

  /**
   * 雇主确认订单后工人钱包的变化记录
   *
   * @param taskId
   */
  void createWorkerMoneyRecording(Long taskId);

  /**
   * 雇主发布需求
   *
   * @param taskId
   */
  void publishRequire(Long taskId);


  /**
   * 更新订单状态
   *
   * @param taskId
   */
  void updateTaskStatus(Long taskId);
}
